/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package reclamos;

import com.csvreader.CsvReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Balrog
 */
public class LeercsvBagTags {
    public LeercsvBagTags(String ruta) throws IOException{
        try {
            conexion con = new conexion();
            CsvReader expedientes = new CsvReader(ruta);
            expedientes.readHeaders();
            String Linea_Aera;
            String Estacion;
            String Tipo_expediente;
            String Numero_expediente;
            String Fecha_expediente;
            String Secuencia_equipaje;
            String Numero_BagTag;
            String Desc_BagTag;
            String Fecha_expediente_nueva=null;
            int contador = 0;
            
            while (expedientes.readRecord()) {
                Linea_Aera = expedientes.get("Linea_Aera");
                if (Linea_Aera.length() == 0) {
                    Linea_Aera = "NULL";
                    contador++;
                }
                Estacion = expedientes.get("Estacion");
                if (Estacion.length() == 0) {
                    Estacion = "NULL";
                    contador++;
                }
                Tipo_expediente = expedientes.get("Tipo_expediente");
                if (Tipo_expediente.length() == 0) {
                    Tipo_expediente = "NULL";
                    contador++;
                }
                Fecha_expediente = expedientes.get("Fecha_expediente");
                Numero_expediente = expedientes.get("Numero_expediente");
                if (Numero_expediente.length() == 0) {
                    Numero_expediente = "NULL";
                    contador++;
                }
                Secuencia_equipaje = expedientes.get("Secuencia_equipaje");
                if (Secuencia_equipaje.length() == 0) {
                    Secuencia_equipaje = "NULL";
                    contador++;
                }
                 Numero_BagTag = expedientes.get("Numero_BagTag");
                if (Numero_BagTag.length() == 0) {
                    Numero_BagTag = "NULL";
                    contador++;
                }
                Desc_BagTag = expedientes.get("Desc_BagTag");
                if (Desc_BagTag.length() == 0) {
                    Desc_BagTag = "NULL";
                    contador++;
                }
                  if (Fecha_expediente.length() > 0) {
                    Fecha_expediente_nueva =this.dateFormatter(Fecha_expediente);
                  }
                  if (Fecha_expediente_nueva == null) {
                    Fecha_expediente_nueva = "NULL";
                    contador++;
                }
  
               
              
                con.insertarBagTags(Linea_Aera, Estacion, Tipo_expediente, Numero_expediente,Fecha_expediente_nueva, Secuencia_equipaje, Numero_BagTag,Desc_BagTag, contador);
                contador = 0;
            }

            expedientes.close();
            try {
                con.conexion.close();
            } catch (SQLException ex) {
                Logger.getLogger(Leercsvexpe.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Leercsvexpe.class.getName()).log(Level.SEVERE, null, ex);
        }
        }
        
        public String dateFormatter(String formatToParse) {

        String format = "";

        SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
        SimpleDateFormat format3 = new SimpleDateFormat("dd-MMM-yy");

        SimpleDateFormat finalFormat = new SimpleDateFormat("yyyy-MM-dd");

        Date parser;

        try {
            parser = format1.parse(formatToParse);
            format = finalFormat.format(parser);
        } catch (ParseException e1) {

            try {
                parser = format2.parse(formatToParse);
                format = finalFormat.format(parser);
            } catch (ParseException e2) {

                try {
                    parser = format3.parse(formatToParse);
                    format = finalFormat.format(parser);
                } catch (ParseException e3) {
                    System.err.println("Error: La fecha entregada no es valida para procesarse.");
                    e2.printStackTrace();
                }

            }
        }

        return format;
    }

    private String cambiar_fecha(String fecha) {


        String estado = null;
        String fechanueva = null;
        try {
            if (fecha.length() > 0) {
                String dia1 = fecha.substring(0, 2);
                String mes1 = fecha.substring(3, 6);
                String anio1 = fecha.substring(7, 11);

                switch (mes1) {
                    case "Jan":
                        mes1 = "01";
                        break;
                    case "Feb":
                        mes1 = "02";
                        break;
                    case "Mar":
                        mes1 = "03";
                        break;
                    case "Apr":
                        mes1 = "04";
                        break;
                    case "May":
                        mes1 = "05";
                        break;
                    case "Jun":
                        mes1 = "06";
                        break;
                    case "Jul":
                        mes1 = "07";
                        break;
                    case "Aug":
                        mes1 = "08";
                        break;
                    case "Sep":
                        mes1 = "09";
                        break;
                    case "Oct":
                        mes1 = "10";
                        break;
                    case "Nov":
                        mes1 = "11";
                        break;
                    case "Dec":
                        mes1 = "12";
                        break;
                    case "Ene":
                        mes1 = "01";
                        break;
                    case "Abr":
                        mes1 = "04";
                        break;
                    case "Ago":
                        mes1 = "08";
                        break;
                    case "Dic":
                        mes1 = "12";
                        break;
                }

                fechanueva = anio1 + "-" + mes1 + "-" + dia1;

                if ("null-null-null".equals(fechanueva)) {
                    fechanueva = null;
                }
            }

        } catch (StringIndexOutOfBoundsException ex) {
            estado = ex.getMessage();
        }


        return fechanueva;
    }
}


